﻿using System;
using System.Collections.Generic;
using System.IO;
using System.Text;
using System.Xml;

using Барс.Своды.АргументыСобытийОтчетнойФормы;
using Барс.Своды.ОтчетнаяФорма;
using Барс.Своды.ТипыЯчеек;
using Барс.Своды.Увязки;

namespace Барс.Своды
{
	public partial class МодульФормы_СубвенцииОргМедПом : БазовыйОбработчикФормы
	{
		#region Структура

		#region Таблицы формы

		#region Таблица Таблица

		#region Свободные ячейки

		public class СвободныеЯчейки_Таблица : НаборЯчеекДанных
		{

			public Барс.Своды.ТипыЯчеек.СтроковыйТип Руководитель
			{
				get { return (Барс.Своды.ТипыЯчеек.СтроковыйТип)this["Руководитель"]; }
			}

			public Барс.Своды.ТипыЯчеек.СтроковыйТип ГлавныйБухгалтер
			{
				get { return (Барс.Своды.ТипыЯчеек.СтроковыйТип)this["ГлавныйБухгалтер"]; }
			}

			public Барс.Своды.ТипыЯчеек.СтроковыйТип ЗамПоЭкономике
			{
				get { return (Барс.Своды.ТипыЯчеек.СтроковыйТип)this["ЗамПоЭкономике"]; }
			}

			public Барс.Своды.ТипыЯчеек.СтроковыйТип Исполнитель
			{
				get { return (Барс.Своды.ТипыЯчеек.СтроковыйТип)this["Исполнитель"]; }
			}

			public Барс.Своды.ТипыЯчеек.СтроковыйТип Телефон
			{
				get { return (Барс.Своды.ТипыЯчеек.СтроковыйТип)this["Телефон"]; }
			}
		}

		#endregion

		#region Строка данных

		public class СтрокаДанных_Таблица : СтрокаДанных
		{

			#region Столбец 1

			public Барс.Своды.ТипыЯчеек.СтроковыйТип Столбец_1
			{
				get { return (Барс.Своды.ТипыЯчеек.СтроковыйТип)this["1"]; }
			}

			#endregion

			#region Столбец 4

			public Барс.Своды.ТипыЯчеек.ФинансовыйТип Столбец_4
			{
				get { return (Барс.Своды.ТипыЯчеек.ФинансовыйТип)this["4"]; }
			}

			#endregion

			#region Столбец 5

			public Барс.Своды.ТипыЯчеек.ФинансовыйТип Столбец_5
			{
				get { return (Барс.Своды.ТипыЯчеек.ФинансовыйТип)this["5"]; }
			}

			#endregion

			#region Столбец 6

			public Барс.Своды.ТипыЯчеек.ФинансовыйТип Столбец_6
			{
				get { return (Барс.Своды.ТипыЯчеек.ФинансовыйТип)this["6"]; }
			}

			#endregion

			#region Столбец 7

			public Барс.Своды.ТипыЯчеек.ФинансовыйТип Столбец_7
			{
				get { return (Барс.Своды.ТипыЯчеек.ФинансовыйТип)this["7"]; }
			}

			#endregion

			#region Столбец 8

			public Барс.Своды.ТипыЯчеек.ФинансовыйТип Столбец_8
			{
				get { return (Барс.Своды.ТипыЯчеек.ФинансовыйТип)this["8"]; }
			}

			#endregion

			#region Столбец 9

			public Барс.Своды.ТипыЯчеек.ФинансовыйТип Столбец_9
			{
				get { return (Барс.Своды.ТипыЯчеек.ФинансовыйТип)this["9"]; }
			}

			#endregion

			#region Столбец 10

			public Барс.Своды.ТипыЯчеек.ФинансовыйТип Столбец_10
			{
				get { return (Барс.Своды.ТипыЯчеек.ФинансовыйТип)this["10"]; }
			}

			#endregion

			#region Столбец 11

			public Барс.Своды.ТипыЯчеек.ФинансовыйТип Столбец_11
			{
				get { return (Барс.Своды.ТипыЯчеек.ФинансовыйТип)this["11"]; }
			}

			#endregion

			#region Столбец 12

			public Барс.Своды.ТипыЯчеек.ФинансовыйТип Столбец_12
			{
				get { return (Барс.Своды.ТипыЯчеек.ФинансовыйТип)this["12"]; }
			}

			#endregion

			#region Столбец 13

			public Барс.Своды.ТипыЯчеек.ФинансовыйТип Столбец_13
			{
				get { return (Барс.Своды.ТипыЯчеек.ФинансовыйТип)this["13"]; }
			}

			#endregion

			#region Столбец 14

			public Барс.Своды.ТипыЯчеек.СтроковыйТип Столбец_14
			{
				get { return (Барс.Своды.ТипыЯчеек.СтроковыйТип)this["14"]; }
			}

			#endregion

		}

		#endregion

		public class ТаблицаДанных_Таблица : ТаблицаДанных
		{
			#region Конструктор

			public ТаблицаДанных_Таблица( ДанныеФормы Данные, string КодТаблицы )
				:base( Данные, КодТаблицы )
			{
			}

			#endregion

			#region Объявление классов

			#region Строки данных

			public class Строки_Таблица : IEnumerable<СтрокаДанных_Таблица>
			{
				private ТаблицаДанных таблица = null;

				public СтрокаДанных_Таблица this[ string Индекс ]
				{
					get { return (СтрокаДанных_Таблица)таблица.МатрицаЗначений.ПолучитьСтроку(Индекс); }
				}

				public СтрокаДанных_Таблица this[ int Индекс ]
				{
					get { return (СтрокаДанных_Таблица)таблица.МатрицаЗначений.ПолучитьСтроку(Индекс); }
				}

				public int КоличествоСтрок
				{
					get { return таблица.МатрицаЗначений.Количество; }
				}

				public IEnumerator<СтрокаДанных_Таблица> GetEnumerator()
				{
					List<СтрокаДанных_Таблица> списокСтрок = new List<СтрокаДанных_Таблица>();

					foreach( СтрокаДанных строкаДанных in таблица.МатрицаЗначений.Строки.Values )
					{
						списокСтрок.Add( строкаДанных as СтрокаДанных_Таблица );
					}

					return списокСтрок.GetEnumerator();
				}

				System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator()
				{
					return this.GetEnumerator();
				}

				#region Конструктор

				public Строки_Таблица( ТаблицаДанных Таблица )
				{
					this.таблица = Таблица;
				}

				#endregion

				#region Строки данных

				public СтрокаДанных_Таблица Строка_1_1_0
				{
					get { return (СтрокаДанных_Таблица)таблица.МатрицаЗначений.Строки["1_1_0"]; }
				}

				public СтрокаДанных_Таблица Строка_1_1_1
				{
					get { return (СтрокаДанных_Таблица)таблица.МатрицаЗначений.Строки["1_1_1"]; }
				}

				public СтрокаДанных_Таблица Строка_1_1_2
				{
					get { return (СтрокаДанных_Таблица)таблица.МатрицаЗначений.Строки["1_1_2"]; }
				}

				public СтрокаДанных_Таблица Строка_2_2_0
				{
					get { return (СтрокаДанных_Таблица)таблица.МатрицаЗначений.Строки["2_2_0"]; }
				}

				public СтрокаДанных_Таблица Строка_3_3_0
				{
					get { return (СтрокаДанных_Таблица)таблица.МатрицаЗначений.Строки["3_3_0"]; }
				}

				public СтрокаДанных_Таблица Строка_13_0_0
				{
					get { return (СтрокаДанных_Таблица)таблица.МатрицаЗначений.Строки["13_0_0"]; }
				}

				public СтрокаДанных_Таблица Строка_13_0_1
				{
					get { return (СтрокаДанных_Таблица)таблица.МатрицаЗначений.Строки["13_0_1"]; }
				}

				public СтрокаДанных_Таблица Строка_13_0_2
				{
					get { return (СтрокаДанных_Таблица)таблица.МатрицаЗначений.Строки["13_0_2"]; }
				}

				public СтрокаДанных_Таблица Строка_13_0_3
				{
					get { return (СтрокаДанных_Таблица)таблица.МатрицаЗначений.Строки["13_0_3"]; }
				}

				public СтрокаДанных_Таблица Строка_13_0_4
				{
					get { return (СтрокаДанных_Таблица)таблица.МатрицаЗначений.Строки["13_0_4"]; }
				}

				public СтрокаДанных_Таблица Строка_20_0_0
				{
					get { return (СтрокаДанных_Таблица)таблица.МатрицаЗначений.Строки["20_0_0"]; }
				}

				public СтрокаДанных_Таблица Строка_20_0_1
				{
					get { return (СтрокаДанных_Таблица)таблица.МатрицаЗначений.Строки["20_0_1"]; }
				}

				public СтрокаДанных_Таблица Строка_20_0_2
				{
					get { return (СтрокаДанных_Таблица)таблица.МатрицаЗначений.Строки["20_0_2"]; }
				}

				public СтрокаДанных_Таблица Строка_20_0_3
				{
					get { return (СтрокаДанных_Таблица)таблица.МатрицаЗначений.Строки["20_0_3"]; }
				}

				public СтрокаДанных_Таблица Строка_20_0_4
				{
					get { return (СтрокаДанных_Таблица)таблица.МатрицаЗначений.Строки["20_0_4"]; }
				}

				public СтрокаДанных_Таблица Строка_25_0_0
				{
					get { return (СтрокаДанных_Таблица)таблица.МатрицаЗначений.Строки["25_0_0"]; }
				}

				public СтрокаДанных_Таблица Строка_25_0_1
				{
					get { return (СтрокаДанных_Таблица)таблица.МатрицаЗначений.Строки["25_0_1"]; }
				}

				public СтрокаДанных_Таблица Строка_26_0_0
				{
					get { return (СтрокаДанных_Таблица)таблица.МатрицаЗначений.Строки["26_0_0"]; }
				}

				public СтрокаДанных_Таблица Строка_24_0_0
				{
					get { return (СтрокаДанных_Таблица)таблица.МатрицаЗначений.Строки["24_0_0"]; }
				}

				public СтрокаДанных_Таблица Строка_21_0_0
				{
					get { return (СтрокаДанных_Таблица)таблица.МатрицаЗначений.Строки["21_0_0"]; }
				}

				public СтрокаДанных_Таблица Строка_21_0_1
				{
					get { return (СтрокаДанных_Таблица)таблица.МатрицаЗначений.Строки["21_0_1"]; }
				}

				public СтрокаДанных_Таблица Строка_21_0_2
				{
					get { return (СтрокаДанных_Таблица)таблица.МатрицаЗначений.Строки["21_0_2"]; }
				}

				public СтрокаДанных_Таблица Строка_21_0_3
				{
					get { return (СтрокаДанных_Таблица)таблица.МатрицаЗначений.Строки["21_0_3"]; }
				}

				public СтрокаДанных_Таблица Строка_21_0_4
				{
					get { return (СтрокаДанных_Таблица)таблица.МатрицаЗначений.Строки["21_0_4"]; }
				}

				public СтрокаДанных_Таблица Строка_0_0_0
				{
					get { return (СтрокаДанных_Таблица)таблица.МатрицаЗначений.Строки["0_0_0"]; }
				}

				public СтрокаДанных_Таблица Строка_1
				{
					get { return (СтрокаДанных_Таблица)таблица.МатрицаЗначений.Строки["1"]; }
				}

				#endregion

			}

			#endregion

			#endregion

			#region Объявление свойств

			public СвободныеЯчейки_Таблица СвободныеЯчейкиТаблицы
			{
				get { return (СвободныеЯчейки_Таблица)СвободныеЯчейки; }
			}

			private Строки_Таблица строкиТаблицы = null;
			public Строки_Таблица СтрокиТаблицы
			{
				get
				{
					if( строкиТаблицы == null )
						строкиТаблицы = new Строки_Таблица(this);

					return строкиТаблицы;
				}
			}

			#endregion

			#region Переопределение методов

			protected override НаборЯчеекДанных СоздатьСвободныеЯчейки()
			{ 
				return new СвободныеЯчейки_Таблица(); 
			}

			protected override СтрокаДанных СоздатьСтрокуДанных()
			{
				СтрокаДанных_Таблица строка = new СтрокаДанных_Таблица();
				строка.ЗаполнитьСтроку( СтолбцыМетаструктуры );

				return строка;
			}

			#endregion
		}


		#endregion

		#endregion

		public class ДанныеФормы_СубвенцииОргМедПом : ДанныеФормы
		{
			#region Объявление классов

		#region Свободные ячейки

		public class СвободныеЯчейки_СубвенцииОргМедПом : НаборЯчеекДанных
		{

			public Барс.Своды.ТипыЯчеек.СсылкаНаУчреждение Учреждение
			{
				get { return (Барс.Своды.ТипыЯчеек.СсылкаНаУчреждение)this["Учреждение"]; }
			}
		}

		#endregion

			#region Класс ТаблицыФормы_СубвенцииОргМедПом

			public class ТаблицыФормы_СубвенцииОргМедПом
			{
				private ДанныеФормы_СубвенцииОргМедПом данныеФормы;

				#region Конструктор

				public ТаблицыФормы_СубвенцииОргМедПом(ДанныеФормы_СубвенцииОргМедПом ДанныеФормы)
				{
					данныеФормы = ДанныеФормы;
				}

				#endregion

				#region Свойства - таблицы

				public ТаблицаДанных_Таблица Таблица
				{ 
					get { return (ТаблицаДанных_Таблица)данныеФормы["Таблица"]; } 
				}

				#endregion

			}

			#endregion

			#endregion

			#region Объявление свойств

			public СвободныеЯчейки_СубвенцииОргМедПом СвободныеЯчейкиФормы
			{
				get { return (СвободныеЯчейки_СубвенцииОргМедПом)this.СвободныеЯчейки; }
			}

			private ТаблицыФормы_СубвенцииОргМедПом таблицыФормы;

			public ТаблицыФормы_СубвенцииОргМедПом ТаблицыФормы
			{
				get { return таблицыФормы; }
			}

			#endregion

			#region Конструктор


			public ДанныеФормы_СубвенцииОргМедПом(IМенеджерСправочников менеджерСправочников)
				:base(менеджерСправочников)
			{
				таблицыФормы = new ТаблицыФормы_СубвенцииОргМедПом(this);
				свободныеЯчейки = new СвободныеЯчейки_СубвенцииОргМедПом();
			}

			#endregion

			#region Переопределение методов

			protected override ТаблицаДанных СоздатьТаблицуДанных( string КодТаблицы )
			{
				switch( КодТаблицы.Trim().ToLower() )
				{

					case "таблица" :
						return new ТаблицаДанных_Таблица( this, КодТаблицы );

					default :
						return new ТаблицаДанных( this, КодТаблицы );
				}
			}

			#endregion
		}

		public ДанныеФормы_СубвенцииОргМедПом ДанныеТекущейФормы
		{
			get { return (ДанныеФормы_СубвенцииОргМедПом)this.Форма; }
		}

		public override ДанныеФормы СоздатьДанныеФормы(IМенеджерСправочников менеджерСправочников)
		{

			return new ДанныеФормы_СубвенцииОргМедПом(менеджерСправочников);
		}

		#endregion
	}
}
